// Copyright 2021 Guoyoko. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"

class FCustomizeFlowEditorModule : public IModuleInterface
{
public:

	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;

	void CreateClassCache();
	TSharedPtr<struct FCusFlowGraphNodeClassHelper> GetClassCache() { return ClassCache; }

private:
	void RegisterAssetAction(class IAssetTools& AssetTools, TSharedRef<class IAssetTypeActions> Action);
	void UnRegisterAssetActions();

	void BindCommands();
	void RegisterMenus();

	void OpenEditorForCusFAsset();
	UWorld* GetWorld(UObject* OptionalObject = nullptr);

private:
	TArray<TSharedRef<class IAssetTypeActions>> RegisteredAssetTypeActions;


	TSharedPtr<struct FCusFlowGraphNodeClassHelper> ClassCache;

	TSharedPtr<class FUICommandList> CusFEditorCommands;
};

